"""
应用配置和配置管理
"""
import json
import os


class Config:
    """配置管理类"""
    
    # ============================================
    # API 配置
    # ============================================
    # 开发环境: http://localhost:60001
    # API_BASE_URL = "http://localhost:60001"
    # 生产环境: https://www.19450815.cn/apis
    API_BASE_URL = "https://www.19450815.cn/apis"
    
    # ============================================
    # 版本信息
    # ============================================
    VERSION = "答手V4.5"
    
    # ============================================
    # 配置文件路径
    # ============================================
    CONFIG_FILE = "files/配置.json"
    DICT_FILE = "files/相似词.txt"
    SCREENSHOT_DIR = "files/识别记录"
    ERROR_LOG_FILE = "files/异常.txt"
    
    # ============================================
    # 默认配置
    # ============================================
    DEFAULT_CONFIG = {
        "账号": "",
        "密码": "",
        "快捷键": "space",
        "模型": {
            "提示": "默认有AL：阿里的通义千问，BD：百度的文心一言，HS：火山的豆包，TX：腾讯的混元，XF：讯飞的星火，DP：DeepSeek，下方有的就是会使用到的，不想要哪个可以去除，模型代码必须大写",
            "模型": ["AL", "BD", "HS", "TX", "XF", "DP"]
        }
    }
    
    @staticmethod
    def get_api_base_url():
        """获取 API 基础地址"""
        return Config.API_BASE_URL
    
    @staticmethod
    def load_config():
        """加载配置文件"""
        try:
            with open(Config.CONFIG_FILE, 'r', encoding='utf-8') as f:
                return json.load(f)
        except FileNotFoundError:
            print('│ 配置文件不存在，使用默认配置')
            return Config.DEFAULT_CONFIG.copy()
        except json.JSONDecodeError:
            print('│ 配置文件格式错误，使用默认配置')
            return Config.DEFAULT_CONFIG.copy()
    
    @staticmethod
    def save_config(config_data):
        """保存配置文件"""
        with open(Config.CONFIG_FILE, 'w', encoding='utf-8') as f:
            json.dump(config_data, f, ensure_ascii=False, indent=4)
    
    @staticmethod
    def ensure_files_exist():
        """确保必要的文件和目录存在"""
        # 创建截图目录
        if not os.path.exists(Config.SCREENSHOT_DIR):
            os.makedirs(Config.SCREENSHOT_DIR)
        
        # 创建配置文件
        if not os.path.exists(Config.CONFIG_FILE):
            with open(Config.CONFIG_FILE, 'w', encoding='utf-8') as f:
                json.dump(Config.DEFAULT_CONFIG, f, ensure_ascii=False, indent=4)
